/*
 * Copyright (c) 2017-2025 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.tencentcloudapi.trocket.v20230308.models;

import com.tencentcloudapi.common.AbstractModel;
import com.tencentcloudapi.common.SSEResponseModel;
import com.google.gson.annotations.SerializedName;
import com.google.gson.annotations.Expose;
import java.util.HashMap;

public class DescribeMessageResponse extends AbstractModel {

    /**
    * Message body.
    */
    @SerializedName("Body")
    @Expose
    private String Body;

    /**
    * Detailed parameters.
    */
    @SerializedName("Properties")
    @Expose
    private String Properties;

    /**
    * Production time.
    */
    @SerializedName("ProduceTime")
    @Expose
    private String ProduceTime;

    /**
    * Message ID.
Note: This field may return null, indicating that no valid values can be obtained.
    */
    @SerializedName("MessageId")
    @Expose
    private String MessageId;

    /**
    * Producer address.
    */
    @SerializedName("ProducerAddr")
    @Expose
    private String ProducerAddr;

    /**
    * List of message consumption situations.
Note: This field may return null, indicating that no valid values can be obtained.
    */
    @SerializedName("MessageTracks")
    @Expose
    private MessageTrackItem [] MessageTracks;

    /**
    * Topic name
    */
    @SerializedName("ShowTopicName")
    @Expose
    private String ShowTopicName;

    /**
    * Total number of items in the message consumption status list.
Note: This field may return null, indicating that no valid values can be obtained.
    */
    @SerializedName("MessageTracksCount")
    @Expose
    private Long MessageTracksCount;

    /**
    * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
    */
    @SerializedName("RequestId")
    @Expose
    private String RequestId;

    /**
     * Get Message body. 
     * @return Body Message body.
     */
    public String getBody() {
        return this.Body;
    }

    /**
     * Set Message body.
     * @param Body Message body.
     */
    public void setBody(String Body) {
        this.Body = Body;
    }

    /**
     * Get Detailed parameters. 
     * @return Properties Detailed parameters.
     */
    public String getProperties() {
        return this.Properties;
    }

    /**
     * Set Detailed parameters.
     * @param Properties Detailed parameters.
     */
    public void setProperties(String Properties) {
        this.Properties = Properties;
    }

    /**
     * Get Production time. 
     * @return ProduceTime Production time.
     */
    public String getProduceTime() {
        return this.ProduceTime;
    }

    /**
     * Set Production time.
     * @param ProduceTime Production time.
     */
    public void setProduceTime(String ProduceTime) {
        this.ProduceTime = ProduceTime;
    }

    /**
     * Get Message ID.
Note: This field may return null, indicating that no valid values can be obtained. 
     * @return MessageId Message ID.
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public String getMessageId() {
        return this.MessageId;
    }

    /**
     * Set Message ID.
Note: This field may return null, indicating that no valid values can be obtained.
     * @param MessageId Message ID.
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public void setMessageId(String MessageId) {
        this.MessageId = MessageId;
    }

    /**
     * Get Producer address. 
     * @return ProducerAddr Producer address.
     */
    public String getProducerAddr() {
        return this.ProducerAddr;
    }

    /**
     * Set Producer address.
     * @param ProducerAddr Producer address.
     */
    public void setProducerAddr(String ProducerAddr) {
        this.ProducerAddr = ProducerAddr;
    }

    /**
     * Get List of message consumption situations.
Note: This field may return null, indicating that no valid values can be obtained. 
     * @return MessageTracks List of message consumption situations.
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public MessageTrackItem [] getMessageTracks() {
        return this.MessageTracks;
    }

    /**
     * Set List of message consumption situations.
Note: This field may return null, indicating that no valid values can be obtained.
     * @param MessageTracks List of message consumption situations.
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public void setMessageTracks(MessageTrackItem [] MessageTracks) {
        this.MessageTracks = MessageTracks;
    }

    /**
     * Get Topic name 
     * @return ShowTopicName Topic name
     */
    public String getShowTopicName() {
        return this.ShowTopicName;
    }

    /**
     * Set Topic name
     * @param ShowTopicName Topic name
     */
    public void setShowTopicName(String ShowTopicName) {
        this.ShowTopicName = ShowTopicName;
    }

    /**
     * Get Total number of items in the message consumption status list.
Note: This field may return null, indicating that no valid values can be obtained. 
     * @return MessageTracksCount Total number of items in the message consumption status list.
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public Long getMessageTracksCount() {
        return this.MessageTracksCount;
    }

    /**
     * Set Total number of items in the message consumption status list.
Note: This field may return null, indicating that no valid values can be obtained.
     * @param MessageTracksCount Total number of items in the message consumption status list.
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public void setMessageTracksCount(Long MessageTracksCount) {
        this.MessageTracksCount = MessageTracksCount;
    }

    /**
     * Get The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem. 
     * @return RequestId The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    public String getRequestId() {
        return this.RequestId;
    }

    /**
     * Set The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     * @param RequestId The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    public void setRequestId(String RequestId) {
        this.RequestId = RequestId;
    }

    public DescribeMessageResponse() {
    }

    /**
     * NOTE: Any ambiguous key set via .set("AnyKey", "value") will be a shallow copy,
     *       and any explicit key, i.e Foo, set via .setFoo("value") will be a deep copy.
     */
    public DescribeMessageResponse(DescribeMessageResponse source) {
        if (source.Body != null) {
            this.Body = new String(source.Body);
        }
        if (source.Properties != null) {
            this.Properties = new String(source.Properties);
        }
        if (source.ProduceTime != null) {
            this.ProduceTime = new String(source.ProduceTime);
        }
        if (source.MessageId != null) {
            this.MessageId = new String(source.MessageId);
        }
        if (source.ProducerAddr != null) {
            this.ProducerAddr = new String(source.ProducerAddr);
        }
        if (source.MessageTracks != null) {
            this.MessageTracks = new MessageTrackItem[source.MessageTracks.length];
            for (int i = 0; i < source.MessageTracks.length; i++) {
                this.MessageTracks[i] = new MessageTrackItem(source.MessageTracks[i]);
            }
        }
        if (source.ShowTopicName != null) {
            this.ShowTopicName = new String(source.ShowTopicName);
        }
        if (source.MessageTracksCount != null) {
            this.MessageTracksCount = new Long(source.MessageTracksCount);
        }
        if (source.RequestId != null) {
            this.RequestId = new String(source.RequestId);
        }
    }


    /**
     * Internal implementation, normal users should not use it.
     */
    public void toMap(HashMap<String, String> map, String prefix) {
        this.setParamSimple(map, prefix + "Body", this.Body);
        this.setParamSimple(map, prefix + "Properties", this.Properties);
        this.setParamSimple(map, prefix + "ProduceTime", this.ProduceTime);
        this.setParamSimple(map, prefix + "MessageId", this.MessageId);
        this.setParamSimple(map, prefix + "ProducerAddr", this.ProducerAddr);
        this.setParamArrayObj(map, prefix + "MessageTracks.", this.MessageTracks);
        this.setParamSimple(map, prefix + "ShowTopicName", this.ShowTopicName);
        this.setParamSimple(map, prefix + "MessageTracksCount", this.MessageTracksCount);
        this.setParamSimple(map, prefix + "RequestId", this.RequestId);

    }
}

